- 研究ノート00および01に関する質問:
- 次の図に示すように、2つのインタラクティブウィンドウが表示されます。1つは灰色で、もう1つは結果です。
- 解決策:project-properties-linker-input-additional依存関係を開き、opencvの構成時に追加された依存関係の1つを削除します
- dst.sizeが間違っています。サイズはオブジェクトdstの属性ではありませんが、メソッド関数dst.size()、同様にdst.type();
- マット
- Matオブジェクトは、ヘッダーとデータの2つの部分に分かれています。
- Matオブジェクトの使用(ここにリストされていないいくつかのプログラムもあります)
- マットコンストラクター
- マットdst(2,2 CV_8UC3、Scalar(0,0,255));
- スカラー括弧は、2 * 2行列の各要素の値です。明らかに、4つの要素はここでは同じです。つまり、(0,0,255)です。
- マットdst(行、列、CV_8UC3、特定のピクセル値);
- CV_8UC3
- 8:各チャネルの1ピクセルが8ビットを占有します
- U:符号なし
- C:文字タイプ
- 3:Scalar()のパラメーターの数を決定する3つのチャネル
- CV_8UC3
- マットdst(2,2 CV_8UC3、Scalar(0,0,255));
- マットコピーの問題
- 部分コピー:データ部分ではなく、Matのヘッダーとポインター部分のみをコピーします
- マットA =未読(B);
- マットC(D);
- フルコピー
- Mat F = A.clone(); FはAとともに変化します
- マットG; A.copyTo(G); AGは互いに干渉しません
- 部分コピー:データ部分ではなく、Matのヘッダーとポインター部分のみをコピーします
- 小さな配列フィルターを定義する
- マットフィルター=(Mat_ <double>(3,3)<< 0、-1,0、-1,5、-1,0、-1,0);
- doubleは行列要素タイプです
- 昨日から学んだカーネルマトリックスを入手する
- マットフィルター=(Mat_ <double>(3,3)<< 0、-1,0、-1,5、-1,0、-1,0);
- マトリックスを作成する別の方法
- マットm = Mat :: zeros(src.size()、src.type());
- すべて0の行列、srcと同じサイズとタイプ
- マットm = Mat :: zeros(2,2、CV_8UC1);
- すべて0行列、2 * 2、CV_8UC1は上記と同じ
- マットm = Mat :: zeros(src.size()、src.type());
- マットコンストラクター
/***Mat对象的基本使用方法***/
int main(int argc, char ** argv)
{
Mat src;
src = imread("地址");
if(!src.data)
{
cout<<"no data"<<endl;
return -1;
}
namedWindow("src_imgae", WINDOW_AUTOSIZE);
imshow("src_image", src);
Mat dst; //创建一个Mat对象
dst = Mat(src.size(), src.type()); //初始化一个Mat对象,和src的大小类型都一样
dst = Scalar(123,12,132); //赋值, Scalar标量,括号就是RGB的值
namedWindow("dst_image", WINDOW_AUTOSIZE);
imshow("dst_image", dst);
Mat dst_clone =src.clone(); //克隆图像会随着源图像改变而改变
Mat dst_copy; //复制的图像不会因为源图像的变化而变化
src.copyTo(dst_copy);
Mat dst_cvt;
cvtColor(src, dst_cvt, RGB2GRAY); //改变颜色空间
cout<<"src' channels: "<<endl;
cout<<"dst_cvt's channels: "<<endl;
const uchar* dst_cvt_firstRow = dst_cvt.ptr<uchar>(0);
cout<<"dst_cvt's firstRow: "<<*dst_cvt_firstRow<<endl;
int cols = dst.cols; //宽度
int rows = dst.rows; //高度
Mat dst_mat(2,2,CV_8UC3,Scalar(12,122,1));
waitKey(0);
return 0;
}