小编AHF*_*AHF的帖子

在opencv中创建晕影过滤器?

我们如何在opencv中制作晕影过滤器?我们需要为它实现任何算法还是仅使用BGR的值?我们如何制作这种类型的过滤器.我在这里看到了它的实现,但我没有清楚地理解它.任何拥有完整算法指导和实施指南的人都非常高兴.

之后Abid rehman K回答我在C试过这种++

int main()
{
    Mat v;
    Mat img = imread ("D:\\2.jpg");
    img.convertTo(v, CV_32F);
    Mat a,b,c,d,e;
    c.create(img.rows,img.cols,CV_32F);
    d.create(img.rows,img.cols,CV_32F);
    e.create(img.rows,img.cols,CV_32F);

    a = getGaussianKernel(img.cols,300,CV_32F);

    b = getGaussianKernel(img.rows,300,CV_32F);


    c = b*a.t();

    double minVal;     
    double maxVal;          
    cv::minMaxLoc(c, &minVal, &maxVal);

        d = c/maxVal;
    e = v*d ;        // This line causing error
    imshow ("venyiet" , e);
    cvWaitKey();
}
Run Code Online (Sandbox Code Playgroud)

d显示正确,但e=v*d行导致运行时错误

OpenCV Error: Assertion failed (type == B.type() && (type == CV_32FC1 || type ==
CV_64FC1 …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing filter computer-vision

11
推荐指数
3
解决办法
6250
查看次数

解释颜色功能和调整像素值

这是我从网络资源中读取的定义

第一是

Midtone: Situated between the darkest tone (Black), and the brightest tone (White). For a 24 bit colour image, this occurs when Red = Green = Blue = 128.

另一个是

Tones created by dots between 30% and 70% of coverage
Run Code Online (Sandbox Code Playgroud)

Midtone also refers to the range of colors that aren't mixed with black (the shadows) or white (the highlights).

我从这些定义得到的是,值为0或255的像素我们应该将它们调整为128.我的定义是正确的吗?根据我的知识,我不想使用直方图均衡的方法,它也用于图像的亮度

我想执行下面的功能,就像我想要执行此功能OpenCV C++但我不知道如何处理Midtones和CYMK值,因为它同时具有RGB和CMYK

在此输入图像描述

例如样品图像

在此输入图像描述

应用上述值后

在此输入图像描述

我想在OpenCV中做同样的事情

如果我们只用RGB执行此操作,我的关注点就是结果

编辑

安德烈的回答很好但仍在等待最佳答案,因为其他图像很难调整其他图像的其他颜色平衡值

c++ opencv image image-processing computer-vision

11
推荐指数
1
解决办法
1643
查看次数

如何根据我的预测获得ROI坐标?

我正在使用SVM来预测投资回报率,我训练了SVM,现在处于测试阶段,它为我提供带有1和0形式的标签的输出。

我正在尝试,如果SVM预测1平均图像包含眉毛,现在我希望它应该在眉毛周围为矩形,因为算法是基于眉毛进行预测的。我怎样才能做到这一点?以下是我用于预测的代码。

h_og = cv2.HOGDescriptor()
histogram = h_og.compute(photo)
arr.append(histogram)
arr = np.float32(arr)
result = svm.predict(arr)
Run Code Online (Sandbox Code Playgroud)

现在结果是数字或标签的形式。如何在测试图像的投资回报率上绘制矩形。

Positive data: image with eyebrows
Negative data: images not containing eyebrow
Testing data: Full face of the person
Run Code Online (Sandbox Code Playgroud)

如果必须使用detectMultiScale()它,则如何将其与上述逻辑一起使用。

将代码用于培训目的

sam = []
lab = []    
# Get positive samples
for filename in glob.glob('D:\*.png'):
    im = cv2.imread(filename, 1)
    h_og = cv2.HOGDescriptor()
    hist = h_og.compute(im)
    sam.append(hist)
    lab.append(1)

# Get negative samples
for file in glob.glob('D:\\*.png'):
    im = cv2.imread(file, 1)
    im = …
Run Code Online (Sandbox Code Playgroud)

opencv image image-processing svm computer-vision

9
推荐指数
1
解决办法
222
查看次数

如何提取图像的特定区域

我想只计算此图像的晕影区域,就像我在这里有图像一样

我如何仅在应用了小插图的区域中计算或迭代/通过并离开其他区域?我只想在应用晕影的区域上应用算法,我试着将标量设置为红色并提取出发现红色的区域,但是它不起作用就像没有给出结果,因为当朝向中心时颜色变浅图像.

晕影变暗通过用下面的掩码图像强度乘以角落和边缘: 在此输入图像描述

这是原始图像在这里

我想blending overlay**only vignette part of** vignette imageoriginal image

这是我的混合叠加代码

void blending_overlay(Mat& img1 , Mat& img2 , Mat& out)
{
Mat result(img1.size(), CV_32FC3);
for(int i = 0; i < img1.size().height; ++i){
    for(int j = 0; j < img1.size().width; ++j){

        for (int c=0 ; c<img1.channels();c++){
            float target = (float)img1.at<uchar>(i, 3*j+c)/255. ;
            float blend =  (float)img2.at<uchar>(i, 3*j+c)/255. ;

            if(target > 0.5){
                result.at<float>(i, 3*j+c) = ((1 - (1-2*(target-0.5)) * (1-blend))); …
Run Code Online (Sandbox Code Playgroud)

opencv image image-processing computer-vision

7
推荐指数
1
解决办法
1271
查看次数

用于读取图像而不是获取帧的java代码

我正在使用这种native方法,但我希望图像作为输入而不是帧,当我运行此代码时,它不运行相机,这是我的java代码

public class CvNativeActivity extends Activity implements CvCameraViewListener2
{
    private CameraBridgeViewBase mOpenCvCameraView;

    public native int convertNativeGray(int n);

    private final static String TAG = "CvNativeActivity";
    public native int convertNativeGray(long matAddrRgba, long matAddrGray);

    private Mat mRgba;
    private Mat mGray;

    // other part

    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) 
    {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS:
                {
                    System.loadLibrary("native_activity");// Load Native module
                    Log.i(TAG, "OpenCV loaded successfully");
                    mOpenCvCameraView.enableView();
                } break;
                default:
                {
                    super.onManagerConnected(status);
                } break;
            }
        }
    }; …
Run Code Online (Sandbox Code Playgroud)

java eclipse java-native-interface android android-ndk

5
推荐指数
1
解决办法
120
查看次数

如何通过使用admob获取资金

我刚开帐户Admob,我想整合我的应用程序,但我不明白它是如何付给我的?我发现我需要在哪里输入我的账户信息才能收到款项,但没有任何好的帮助,任何使用经验,请帮助我,关于你的经验

admob google-play

5
推荐指数
1
解决办法
8109
查看次数

使用opencv通过Filestorage保存时出错

我试图保存BOW算法中的词汇表.以下是我的代码.

FileStorage fs; 
fs.open("Vocabulary.xml", FileStorage::WRITE); 
Mat vocabulary = bow.cluster(); 
fs << vocabulary ;
fs.release();
FileStorage fs2; 
fs2.open("Vocabulary.xml", FileStorage::READ); 
fs2 ["Vocabulary"] >> vocabulary ;
dextract.setVocabulary(vocabulary);

cv::Mat training_mat(num_img , dictionarySize,CV_32FC1);
cv::Mat labels(num_img,1,CV_32FC1);

CvSVM svm;
svm.load( "trainsvm.xml" );
Run Code Online (Sandbox Code Playgroud)

这是我的错误:

OpenCV Error: Unspecified error (No element name has been given) in unknown function , file c:\opencv\2.4.4\build\include\opencv2\core\operations.hpp , line 2908
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing svm computer-vision

4
推荐指数
1
解决办法
3170
查看次数

如何使用opencv在控制点上绘制曲线

我想绘制curve控制点,以便我可以移动曲线来改变颜色,下面是代码,从一个非常好解释的答案获得帮助

const int N=5;      // number of control points (must be >= 4)
float ctrl[N]=      // control points y values initiated with linear function y=x
{           // x value is index*1.0/(N-1)
    0.00,
    0.25,
    0.50,
    0.75,
    1.00,
 };
float correction(float col,float *ctrl,int n)
    {
    float di=1.0/float(n-1);
    int i0,i1,i2,i3;
    float t,tt,ttt;
    float a0,a1,a2,a3,d1,d2;
    // find start control point
    col*=float(n-1);
    i1=col; col-=i1;
    i0=i1-1;
    i2=i1+1; if (i2>=n) i2=n-1;
    i3=i1+2;
    // compute interpolation coefficients
    if (i0>=0) d1=0.5*(ctrl[i2]-ctrl[i0]); else d1=ctrl[i2]-ctrl[i1];
    if (i3< …
Run Code Online (Sandbox Code Playgroud)

opencv computer-vision

4
推荐指数
1
解决办法
5674
查看次数

图像在显示时改变形状

我正在尝试显示此图像,因为我在我的目录中有此图像

在此输入图像描述

但我用这段代码显示它

Mat img=imread("D:\\vig.png");
imshow("image",img);
waitKey();
imwrite("D:\\img.jpg",img);
Run Code Online (Sandbox Code Playgroud)

相同的图像显示如下

在此输入图像描述

它出什么问题了

c++ opencv image image-processing computer-vision

2
推荐指数
1
解决办法
905
查看次数

为什么图像不合并

我想在下面的代码中混合2个图像

Mat input = imread ("E:\\img1.jpg");
Mat image;
Mat img12=imread("D:\\vig.png",-1);  // load 'as is', don't convert to bgr !!
Mat ch[4]; 
split(img12,ch);
Mat im2 = ch[3];              // here's the vignette
im2 = 255 - im2; 
im2.convertTo(im2 , input.type());
resize(im2,image,Size(input.rows,input.cols));
blending_overlay(image , input , image);
imshow ("image",image);
waitKey();
Run Code Online (Sandbox Code Playgroud)

img12上的不同操作是因为它的形状,代码给我的运行时错误

在此输入图像描述

c++ opencv image image-processing computer-vision

1
推荐指数
1
解决办法
85
查看次数

如果声明不起作用,即使声明是真的

我的文本文件包含

Wew213
Wew214
Wew215
Run Code Online (Sandbox Code Playgroud)

我在程序中的输入是

Wew213
Run Code Online (Sandbox Code Playgroud)

但它告诉我输出

"Not Matched"
Run Code Online (Sandbox Code Playgroud)

实际上我正在做的是我想输入输入,如果输入匹配文本文件中的数字,它应该通过if语句运行输出否则语句

这是我的计划

char file_data[10];
std::ifstream file_read ("D:\\myfile.txt");
cout<<"Enter the number to search"<<endl;
char val[10];
cin>>val;
while(!file_read.eof())
{
    file_read>>file_data;
    cout<<file_data<<endl;
    }
    if (val == file_data)
    {
        cout<<"Matched"<<endl;
    }
    else
    {
           cout<<"Not Matched"<<endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
112
查看次数

用递归逆转一串单词

我正在尝试在Java中反转完整字符串

例如,Good morning因此输出应返回morning good

我尝试了以下功能

public static String reverse(String s)
    {
        if (s.isEmpty())
            return s;
        //int n = 0;
        return reverse(s.substring(1)) + s.charAt(0);

    }
Run Code Online (Sandbox Code Playgroud)

但是上述功能正在转换good morninggninrom doog。我的代码适用于每个字符,如何使其适用于文字。任何提示或指南/解释将不胜感激。

我已经去过这个问题,但没有解决我的问题

更新:

在@snr答案和@NathanHughes注释的帮助下尝试以下代码

public static String reverse(String s)
    {
        int s1 = s.indexOf(" ");


        if (s1 != -1) 
        {
         return reverse(s.substring(s1+1)) + s.substring(0,s1);
        }
        else
        {
            return "-1";
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是输出是

-1good
Run Code Online (Sandbox Code Playgroud)

java recursion

0
推荐指数
1
解决办法
76
查看次数